分享人:王蒙
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
打包,正式说法是构建项目软件包,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的是JAR包和WAR包。
2.1 关于package
任何一个Maven项目都需要定义POM元素packaging(如果不写则默认值为jar)。该元素决定了项目的打包方式。实际的情形中,如果你不声明该元素,Maven会帮你生成一个JAR包;如果你定义该元素的值为war,那你会得到一个WAR包;如果定义其值为POM(比如是一个父模块),那什么包都不会生成。
2.2 常规打包
maven项目常规的四种包:jar、war、source和javadoc,maven提供了对应的插件。
2.3 可执行jar包
Maven默认生成的jar包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的jar文件,还要满足两个条件:
jar包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class信息。 项目所有的依赖都必须在Classpath中。
1:使用jar和dependency插件
2:使用shade插件
3:使用assembly插件
2.3 项目分发包
实际的软件项目常常会有更复杂的打包需求,例如我们可能需要为客户提供一份产品的分发包,这个包不仅仅包含项目的字节码文件,还得包含依赖以及相关脚本文件以方便客户解压后就能运行,此外分发包还得包含一些必要的文档。
支持各种打包文件格式,包括zip、tar.gz、tar.bz2等等,通过一个打包描述文件,能够帮助用户选择具体打包哪些文件集合、依赖、模块、和甚至本地仓库文件,每个项的具体打包路径用户也能自由控制。
assembly.xml文件的id对应了其最终生成文件的classifier。
formats定义打包生成的文件格式。
dependencySets用来定义选择依赖并定义最终打包到什么目录。
fileSets允许用户通过文件或目录的粒度来控制打包。
实际使用
在pom文件中配置插件
assembly插件对包含spring框架的项目打可运行jar包会报错,
参考一:maven打包的技巧
参考二:maven插件官方文档
其他格式的项目分发包
感谢大家观看
BY:王蒙